<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// Web Worker
// Web Worker是HTML5新增的一种'多线程技术'
// 通过Web Worker可以在浏览器开辟另一个线程来执行JS脚本
// Worker线程通常用于执行 高强度、高耗时、高延迟 等任务

// 使用注意点：
// 1.Web Worker需要在服务器环境运行（使用Live Server插件打开页面）
// 2.Web Worker不能执行跨域脚本
// 3.Web Worker不能访问window、document
// 4.但是，可以访问ajax、navigertor、lacotion对象

// 创建worker对象（开辟了worker线程）
let worker = new Worker('./worker.js');

// 给worker线程发送消息
worker.postMessage('消息');

// 接收worker线程的消息
worker.onmessage = function (e){
    // worker线程发送消息过来时，会触发该事件
    console.log( e.data );// worker线程发送的消息
}

// 关闭worker线程
worker.terminate();

// 接收主线程的消息
onmessage = function (){}
this.onmessage = function (){}
self.onmessage = function (e){
    // 主线程发送消息过来时，会触发该事件
    console.log( e.data );// 主线程发送的消息
}

// 给主线程发送消息
postMessage('消息');
this.postMessage('消息');
self.postMessage('消息');

// 关闭worker线程
close();
this.close();
self.close();
    
</script>
</body>
</html>